#include "cmsis_os.h"
#include "stm32l4xx_hal.h"
#include "key.h"

#define DEBOUNCE_DELAY_MS 50  // 消抖时间（50ms）

extern osSemaphoreId_t sensorSemHandle;  // 定义信号量句柄
volatile uint32_t last_interrupt_time = 0;  // 用于记录上次中断时间

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    // 检查是否是 PB1 引脚触发
    if (GPIO_Pin == GPIO_PIN_1)
    {
        // 当前时间减去上次触发时间，判断是否超过消抖时间
        uint32_t current_time = HAL_GetTick();
        if (current_time - last_interrupt_time > DEBOUNCE_DELAY_MS) {
            // 发送信号量（按键按下事件）
            osSemaphoreRelease(sensorSemHandle);

            // 更新上次触发时间
            last_interrupt_time = current_time;
        }
    }
}
